package problem.year2021.february;

import java.util.Arrays;

/**
 * 给定两个字符串 s1 和 s2，写一个函数来判断 s2 是否包含 s1 的排列。
 * <p>
 * 换句话说，第一个字符串的排列之一是第二个字符串的子串。
 * <p>
 * 示例1:
 * <p>
 * 输入: s1 = "ab" s2 = "eidbaooo"
 * 输出: True
 * 解释: s2 包含 s1 的排列之一 ("ba").
 * <p>
 * 示例2:
 * <p>
 * 输入: s1= "ab" s2 = "eidboaoo"
 * 输出: False
 * <p>
 * 注意：
 * 输入的字符串只包含小写字母
 * 两个字符串的长度都在 [1, 10,000] 之间
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/permutation-in-string
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class February10 {
    public boolean checkInclusion(String s1, String s2) {
        if (s1.length() > s2.length()) return false;
        char[] chars = s1.toCharArray();
        Arrays.sort(chars);
        String str = new String(chars);
        StringBuilder str2 = new StringBuilder(s2);
        int len = s2.length();
        for (int i = 0; i < len - chars.length + 1; ++i) {
            char[] tmp = str2.substring(i, i + chars.length).toCharArray();
            Arrays.sort(tmp);
            if (String.valueOf(tmp).equals(str)) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) {
//        String s1 = "ab", s2 = "eidbaooo";
        String s1 = "adc", s2 = "dcda";
        System.out.println(new February10().checkInclusion(s1, s2));
    }
}
